
/*
    提示用户输入年月日信息，判断这一天是这一年中的第几天并打印。
 */
import java.util.Scanner;

public class PrintDay {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr= {1,3,5,7,8,10};
        //提示输入年份，并判断是否为闰年
        System.out.println("请输入年份：");
        int year = sc.nextInt();
        boolean LeapYear = false;
        if ((year%4==0&&year%100!=0)||year%400==0){
            LeapYear = true;
        }
        //提示输入月份，并判断是否合法
        System.out.println("请输入月份：");
        int month = sc.nextInt();
        for (;;){
            if (month > 12){
                System.out.println("输入错误，请重新输入月份：");
                month = sc.nextInt();
            }else{
                break;
            }
        }
        //提示输入日期并判断是否合法
        System.out.println("请输入日期：");
        int day = sc.nextInt();
        if (month == 2){
            for (;;){
                if(day >= 30){
                    System.out.println("输入错误，2月没有30天，请重新输入日期：");
                    day = sc.nextInt();
                }   else if (!LeapYear && day == 29){
                    System.out.println("输入错误，并不是闰年没有29号哦，请重新输入日期：");
                    day = sc.nextInt();
                }   else {
                    break;
                }
            }
        }else if(day > 31){
            System.out.println("输入错误，日期过大，请重新输入日期：");
            day = sc.nextInt();
        }
        System.out.println("-----");
        //计算日期
        int date = 0;
        //计算31天的月份数量
        for (int i=1; i<=month-1; i++){
            for (int j : arr) {
                if (i == j) {
                    date += 1;
                }
            }
            if(i == 2 && LeapYear){
                date += 29;
            }else if (i == 2){
                date += 28;
            }else {
                date += 30;
            }
        }
        date += day;
        System.out.println("这天是这一年的第"+date+"天");
    }
}
